var maxProfit = function(prices) {
  const n = prices.length;

  // 每天有五个状态、
  // 0：无操作，1：第一次持有股票，2：第一次不持有股票，3：第二次持有股票，4：第二次不持有股票

  
  const dp = new Array(n).fill(0).map(() => new Array(5).fill(0));
  dp[0][0] = 0;
  dp[0][1] = -prices[0];
  dp[0][2] = 0;
  dp[0][3] = -prices[0];
  dp[0][4] = 0;

  for (let i = 1; i < n; i++) {
    dp[i][0] = dp[i - 1][0];
    dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);
    dp[i][2] = Math.max(dp[i - 1][1] + prices[i], dp[i - 1][2]);
    dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]);
    dp[i][4] = Math.max(dp[i - 1][4], dp[i - 1][3] + prices[i]);
  }

  return Math.max(dp[n - 1][2], dp[n - 1][4]);

}

const prices  = [3,3,5,0,0,3,1,4];
console.log(maxProfit(prices)); // 6